/*
 * Copyright 2011 Cedric Priscal
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License. 
 */

package android_serialport_api.sample;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;

import android.os.Bundle;
import android.util.Log;

import com.clouddot.baipai.R;

public class Sending01010101Activity extends SerialPortActivity {

	SendingThread mSendingThread;
	byte[] mBuffer;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.a_t_sending01010101);
		mBuffer = new byte[1024];
		Arrays.fill(mBuffer, (byte) 0x55);
		if (mSerialPort != null) {
			mSendingThread = new SendingThread();
			mSendingThread.start();
		}
	}

	@Override
	protected void onDataReceived(byte[] buffer, int size) {
		// ignore incoming data
		Log.e("a_t_sending01010101", "+++++++++++++++++++++++++" + buffer.length);
		for (int i = 0; i < size; i++) {
			int data = Integer.parseInt(buffer[i] + "", 16);
			Log.e("a_t_sending01010101", "i:" + i + ", buffer[i]:" + buffer[i] + ", string:" + ((char)data));
		}

		String str = null;
		try {
			str = new String(buffer, "utf-8");
			Log.e("a_t_sending01010101", "utf-8 ondatareceived:" + str + "," + size);
			str = new String(buffer, "GB2312");
			Log.e("a_t_sending01010101", "gb2312 ondatareceived:" + str + "," + size);
			str = new String(buffer, "ASCII");
			Log.e("a_t_sending01010101", "ASCII ondatareceived:" + str + "," + size);
			str = new String(buffer, "ISO-8859-1");
			Log.e("a_t_sending01010101", "ISO-8859-1 ondatareceived:" + str + "," + size);
			str = new String(buffer, "GBK");
			Log.e("a_t_sending01010101", "GBK ondatareceived:" + str + "," + size);
			str = new String(buffer, "UTF-16");
			Log.e("a_t_sending01010101", "UTF-16 ondatareceived:" + str + "," + size);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
//		Log.e("a_t_sending01010101", "ondatareceived:" + new String(buffer) + "," + size);
	}

	private class SendingThread extends Thread {
		@Override
		public void run() {
			while (!isInterrupted()) {
				try {
					if (mOutputStream != null) {
						Log.e("out", "mBuffer:" + new String(mBuffer));
						mOutputStream.write(mBuffer);
						try {
							byte[] in = new byte[1024*1024];
							Log.e("out", "1");
							mInputStream.read(in);
							Log.e("out", "in:" + in.toString());

							String str = null;
							try {
								str = new String(in, "utf-8");
								Log.e("a_t_sending01010101", "utf-8 in:" + str + "," );
								str = new String(in, "GB2312");
								Log.e("a_t_sending01010101", "gb2312 in:" + str + ",");
								str = new String(in, "ASCII");
								Log.e("a_t_sending01010101", "ASCII in:" + str + ",");
								str = new String(in, "ISO-8859-1");
								Log.e("a_t_sending01010101", "ISO-8859-1 in:" + str + ",");
								str = new String(in, "GBK");
								Log.e("a_t_sending01010101", "GBK in:" + str + ",");
								str = new String(in, "UTF-16");
								Log.e("a_t_sending01010101", "UTF-16 in:" + str + ",");
							} catch (UnsupportedEncodingException e) {
								e.printStackTrace();
							}
						} catch (Throwable e) {
							e.printStackTrace();
						}

					} else {
						Log.e("out", "2");
						return;
					}
				} catch (IOException e) {
					e.printStackTrace();
					return;
				}
			}
		}
	}
}
